home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD023d.dsk / ROUTINE MACHINE DEMO.bas < prev    next >
BASIC Source File  |  2003-06-12  |  17KB  |  143 lines

  1. 1  REM "<CTRL-M><CTRL-M>    -=< ROUTINE MACHINE DEMO >=-<CTRL-M><CTRL-M>      BY C.R.J.  DATE:07/13/83<CTRL-M><CTRL-M>
  2. 10  CALL  PEEK(175) + PEEK(176) *256 -46
  3. 15  & "SPLIT",0: & "SPLIT",2
  4. 20  SPEED= 255: NORMAL : PRINT  CHR$(21);: PR# 0: TEXT : HOME :M$ =  CHR$(13):T$ = M$ +M$:FS =  -16302: ONERR  GOTO 60
  5. 30  & "RESET ERR",253
  6. 40  GOTO 90
  7. 50  TEXT : NORMAL : VTAB 24: HTAB 10: PRINT "ONE MOMENT PLEASE...";: SPEED= 254: VTAB 20: & "RESET BOOT": & "RUN","DEMO MENU"
  8. 60  & "ERR",N,L: IF N = 255  OR N = 253  THEN 50: REM "IF CTRL-C OR RESET
  9. 70  VTAB 23: HTAB 1: INVERSE : & "ERR MSSG": NORMAL : PRINT "  PRESS <RETURN>";: & "GET"A$ IF  CHR$(13);: HTAB 1: CALL  -958: GOTO 50
  10. 90  TEXT : HOME :M$ =  CHR$(13):T$ = M$ +M$:SP$ = "                                        ":Q$ =  CHR$(34)
  11. 100  INVERSE : VTAB 2: HTAB 9: PRINT "                      ": HTAB 9: PRINT "   ROUTINE MACHINE    ": HTAB 9: PRINT "                      ": NORMAL : & "WAIT",1
  12. 110  FOR X = 1 TO 11: READ P,D: & "BEEP",P,D *1.25: NEXT X: & "WAIT",1.5
  13. 120  DATA 47,5,0,5,37,15,0,5,47,5,0,10,63,5,0,5,37,15,0,5,31,7: REM " 1(C) 3(E) 1(C) 1(LO G) 3(E) 1(HI G)
  14. 150  PRINT T$:A$ = "ROUTINE MACHINE IS A VERSATILE UTILITY THAT MAKES IT EASY TO PUT THE POWER AND SPEED OF MACHINE LANGUAGE IN YOUR APPLESOFT PROGRAMS.": & "PRT",A$: GOSUB 8400: & "WAIT",11.5
  15. 160  PRINT :A$ = "ROUTINE MACHINE DOES ALL THE WORK FOR YOU -- NO KNOWLEDGE OF MACHINE LANGUAGE PROGRAMMING IS NECESSARY.": & "PRT",A$: GOSUB 8400: & "WAIT",12
  16. 170  PRINT :A$ = "SIMPLY CHOOSE THE ROUTINES YOU NEED FROM AN EVER GROWING LIBRARY, AND ROUTINE MACHINE WILL ATTACH THEM TO YOUR PROGRAM.  THEN YOU CAN USE EACH ROUTINE WITH A SIMPLE ONE-LINE COMMAND.": & "PRT",A$,39: GOSUB 8400: & "WAIT",16
  17. 180  PRINT M$: HTAB 13: PRINT "WATCH THIS...";
  18. 190  GOSUB 8400: & "WAIT",5
  19. 200  GOSUB 8600: GOSUB 9000: PRINT " NO MODULES APPENDED ": NORMAL : & "WAIT",3
  20. 205 U = 15:D = 20:L = 17:R = 40: GOSUB 8100: PRINT "THIS IS THE MENU THAT YOU WILL SEE WHEN YOU START UP THE 'ROUTINE MACHINE'.";: GOSUB 8500: & "WAIT",6: GOSUB 8100: PRINT "LET'S SEE HOW EASY IT CAN BE TO ADD MACHINE-LANGUAGE POWER TO YOUROWN PROGRAMS.";
  21. 210  GOSUB 8500: & "WAIT",6: GOSUB 8100: PRINT "FIRST, WE'LL SELECT   THE 'APPEND' OPTION ONTHIS MENU...";: GOSUB 8500: & "WAIT",3: GOSUB 8300: INVERSE : VTAB 3: HTAB 23: PRINT "1": & "WAIT",1: VTAB 5: HTAB 1: PRINT "1   APPEND A MODULE": GOSUB 8400: & "WAIT",3: NORMAL 
  22. 215  GOSUB 8600: GOSUB 9100: & "WAIT",2: GOSUB 8100: PRINT "THEN WE'LL TYPE IN THENAME OF THE ROUTINE   THAT WE WANT TO USE.";: GOSUB 8500: GOSUB 8300: & "WAIT",3: VTAB 8: HTAB 8:A$ = "BEEP.RM": GOSUB 8000
  23. 220  & "WAIT",1: PRINT T$"INVOCATION NAME"T$"   --> ";: INVERSE : PRINT " ": & "WAIT",2: GOSUB 8100: PRINT "FINALLY, WE'LL TYPE INTHE NAME THAT WE WANT TO CALL THE ROUTINE.";: GOSUB 8500: GOSUB 8300: & "WAIT",2: VTAB 12: HTAB 8:A$ = "BEEP": GOSUB 8000
  24. 225  & "WAIT",3: GOSUB 8100: PRINT "THAT'S ALL THAT THERE IS TO IT...";: GOSUB 8500: & "WAIT",3: GOSUB 8100: PRINT "IN A FEW SECONDS, THE ROUTINE IS ATTACHED TOYOUR PROGRAM, AND YOU CAN START USING IT!";: GOSUB 8400: GOSUB 8300: & "WAIT",6
  25. 230  GOSUB 8600: GOSUB 9700: & "WAIT",6: GOSUB 8100: PRINT "THIS SHOWS HOW EASY   PROGRAMMING CAN BE    WITH ROUTINE MACHINE.";: GOSUB 8500: & "WAIT",12: GOSUB 8100: PRINT "THIS IS AN EXAMPLE OF HOW YOU WOULD ACCESS AROUTINE FROM BASIC...";: GOSUB 8500
  26. 235  & "WAIT",4: GOSUB 8300: VTAB 11: HTAB 1: INVERSE : PRINT "20  & "Q$"BEEP"Q$",P,D": NORMAL : GOSUB 8400: & "WAIT",12
  27. 240  GOSUB 8600: GOSUB 9000: PRINT " 1 MODULE APPENDED ": NORMAL : & "WAIT",3:U = 7:D = 12
  28. 245  GOSUB 8100: PRINT "NOW LET'S LOOK AT SOMEOF ROUTINE MACHINE'S  POWERFUL LIBRARIAN    CAPABILITIES.";: GOSUB 8500: & "WAIT",6: GOSUB 8100: PRINT "FIRST, WE'LL SELECT   THE 'MODULE REPORT'   OPTION...";
  29. 250  GOSUB 8500: & "WAIT",3: GOSUB 8300: INVERSE : VTAB 3: HTAB 23: PRINT "6": & "WAIT",1: VTAB 15: HTAB 1: PRINT "6   REPORT MODULES APPENDED": GOSUB 8400: & "WAIT",3: NORMAL :U = 15:D = 20
  30. 255  GOSUB 8600: GOSUB 9800: & "WAIT",2: GOSUB 8100: PRINT "THIS OPTION SHOWS US  THE NAMES OF ALL THE  MODULES CURRENTLY     APPENDED.";: GOSUB 8500: & "WAIT",6: GOSUB 8100: PRINT "IF WE WERE USING MORE MODULES, IT MIGHT LOOKLIKE THIS...";: GOSUB 8500
  31. 260  & "WAIT",3: GOSUB 8300: FOR X = 2 TO 5: VTAB 1: HTAB 39: PRINT X: READ A$,B$: VTAB X *2 +3: PRINT "#"X TAB( 6)A$ TAB( 23)B$".RM": GOSUB 8400: & "WAIT",.5: NEXT X: & "WAIT",6
  32. 265  DATA "PRINT","PRINT USING","SORT","BUBBLE SORT","SEARCH","STRING SEARCH","SOUND","SOUND EFFECTS"
  33. 270  GOSUB 8600: GOSUB 9000: PRINT " 1 MODULE APPENDED ": NORMAL : & "WAIT",3:U = 7:D = 12: GOSUB 8100: PRINT "NOW WE'LL SELECT THE  'SEARCH' OPTION...";: GOSUB 8500: & "WAIT",3
  34. 275  GOSUB 8300: INVERSE : VTAB 3: HTAB 23: PRINT "7": & "WAIT",1: VTAB 17: HTAB 1: PRINT "7   SEARCH FOR AMPERSANDS/CALLS": GOSUB 8400: & "WAIT",4: NORMAL :U = 15:D = 20
  35. 280  GOSUB 8600: GOSUB 9830: & "WAIT",5: GOSUB 8100: PRINT "THIS OPTION WILL HELP US FIND ALL THE PLACESWHERE WE USE ROUTINES IN OUR PROGRAM.";: GOSUB 8500: & "WAIT",6
  36. 285  GOSUB 8100: PRINT "LET'S CHOOSE OPTION 1,WHICH WILL FIND ALL OFTHEM.";: GOSUB 8500: & "WAIT",2: GOSUB 8300: VTAB 5: HTAB 1: INVERSE : PRINT "1   ALL SUCH STATEMENTS?": NORMAL : GOSUB 8400: & "WAIT",6
  37. 290  GOSUB 8600: GOSUB 9860: & "WAIT",4:U = 14:D = 19: GOSUB 8100: PRINT "THIS SHOWS US ALL THE PLACES WHERE WE USE   ROUTINES IN OUR       PROGRAM.";: GOSUB 8500: & "WAIT",6
  38. 295  GOSUB 8100: PRINT "IF WE WERE MAKING MOREUSE OF ROUTINES, IT   MIGHT LOOK LIKE THIS..";: GOSUB 8500: & "WAIT",3: GOSUB 8300:U = 15:D = 20: FOR X = 2 TO 5: READ N,A$,B$: VTAB X *2 +1: HTAB 1: PRINT N TAB( 7)"& "Q$A$Q$","B$: GOSUB 8400: & "WAIT",.5: NEXT X: & "WAIT",6
  39. 300  DATA 40,"SOUND","X,15",53,"SORT","A$(FE) TO A$(LE)",75,"PRINT","EDIT$,2.65*1.05;A$",120,"SEARCH","I$(X1),S$,P"
  40. 350  HOME : GOSUB 8600: HTAB 12: INVERSE : PRINT "ROUTINE MACHINE": NORMAL : VTAB 3:A$ = "ROUTINE MACHINE ALSO COMES WITH OVER 30 ROUTINES THAT YOU CAN USE RIGHT AWAY.  HERE'S WHAT JUST A FEW OF THEM CAN DO FOR YOU:": & "PRT",A$: & "WAIT",6
  41. 360 W = 24: GOSUB 8700: INVERSE : GOSUB 8500: PRINT M$T$"BEEP": NORMAL :A$ = "LETS YOU MAKE TONES AND MUSIC EASILY...": & "PRT",A$: & "WAIT",2
  42. 370  FOR X = 1 TO 10: & "BEEP", RND(1) *150 +50,10: & "BEEP",0,2: NEXT X: & "WAIT",1: FOR X = 1 TO 26: READ N: & "BEEP",N,15: NEXT X: & "BEEP",114,50: DATA 114,100,89,75,85,85,66,75,75,56,59,56,75,89,114,100,89,134,75,85,89,100,114,152,114,120
  43. 380  & "WAIT",1:W = 9: GOSUB 8700: INVERSE : PRINT M$T$"SOUND EFFECTS": GOSUB 8500: NORMAL :A$ = "WILL CREATE ALL THE NOISES YOUR PROGRAMS WILL EVER NEED...": & "PRT",A$: & "WAIT",1: FOR X = 1 TO 10: & "SOUND", RND(1) *256, RND(1) *256: & "BEEP",0,5: NEXT X
  44. 390  & "WAIT",5
  45. 400 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT M$"TEXT FORMATTER": NORMAL :A$ = "WILL PRINT YOUR TEXT WITH WORD WRAP, SO THAT WORDS WILL NOT BE BROKEN ACROSS THE END OF A LINE.": & "PRT",A$: & "WAIT",6
  46. 415 B$ = "FOUR SCORE AND SEVEN YEARS AGO, OUR FATHERS BROUGHT FORTH ON THIS CONTINENT A NEW NATION CONCEIVED IN LIBERTY AND DEDICATED TO THE PROPOSITION THAT ALL MEN ARE CREATED EQUAL."
  47. 420  PRINT T$"HERE'S HOW BASIC PRINTS A SENTENCE:"M$: GOSUB 8500: & "WAIT",3: PRINT B$: GOSUB 8400: & "WAIT",8
  48. 430  & "WINDOW",8:W = 9: GOSUB 8700: & "WINDOW",1: VTAB 8: & "WAIT",1: PRINT "NOW HERE'S HOW ROUTINE MACHINE DOES IT:": GOSUB 8500: & "WAIT",3: PRINT : & "PRT",B$;: GOSUB 8400
  49. 440  & "WAIT",11
  50. 450 W = 17: GOSUB 8700: INVERSE : PRINT T$"PRINT USING": NORMAL :A$ = "IS AN EXCELLENT AND VERY COMPACT WAY OF FORMATTING NUMERIC OUTPUT.": & "PRT",A$: GOSUB 8500: & "WAIT",3: PRINT M$"NUMBER      FORMAT          OUTPUT"
  51. 460  PRINT "---------------------------------------": FOR X = 1 TO 3: READ N,A$,B$: PRINT N TAB( 13)Q$A$Q$ TAB( 29)B$: NEXT X: GOSUB 8400
  52. 470  DATA 8386.748,"****,**$.00","**$8,386.75",40965,"00/00/00","04/09/65",2653589.79," ,   ,   .00","2,653,589.79"
  53. 480  & "WAIT",12
  54. 500 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT T$"BUBBLE SORT": NORMAL :A$ = "GIVES YOU A FAST, EASY WAY TO SORT 1-DIMENSIONAL STRING ARRAYS.": & "PRT",A$: & "WAIT",6: PRINT T$"HERE'S A SORT USING BASIC:": LIST 9300,9370: GOSUB 8400
  55. 510  & "WAIT",6: & "WINDOW",6: FOR X = 1 TO 6: & "SCROLL 4X","D": FOR N = 1 TO 10: NEXT N: NEXT X: & "WINDOW",1: & "WAIT",1: VTAB 7: PRINT M$"AND HERE'S ONE USING ROUTINE MACHINE:": PRINT M$"9300  & "Q$"SORT"Q$",A$(FE) TO A$(LE)": GOSUB 8400
  56. 520  & "WAIT",8
  57. 600 W = 24: GOSUB 8700: GOSUB 8600: INVERSE : PRINT "STRING INPUT": NORMAL :A$ = "LETS YOU INPUT ANYTHING, INCLUDING COMMAS AND COLONS...": & "PRT",A$: & "WAIT",6
  58. 610  PRINT M$"HERE'S A BASIC 'INPUT' STATEMENT:"T$"50  INPUT "Q$"DATE?"Q$";J$": GOSUB 8500: & "WAIT",4: PRINT M$"THIS IS WHAT HAPPENS WHEN YOU USE IT:"M$: GOSUB 8500: & "WAIT",4: PRINT "DATE?";: INVERSE : PRINT " " CHR$(8);: GOSUB 8400: & "WAIT",2
  59. 620 A$ = "MARCH 7, 1983": GOSUB 8000: & "WAIT",.2: PRINT M$"?EXTRA IGNORED"M$"YOU TYPED 'MARCH 7'" CHR$(7): & "WAIT",6
  60. 630  PRINT M$"NOW, HERE'S A ROUTINE MACHINE 'INPUT':"T$"50  & "Q$"INPUT"Q$","Q$"DATE?"Q$";J$": GOSUB 8500: & "WAIT",4: PRINT M$"AND THIS IS HOW IT WORKS:"M$: GOSUB 8500: & "WAIT",4: PRINT "DATE?";: INVERSE : PRINT " " CHR$(8);: GOSUB 8400: & "WAIT",2
  61. 640 A$ = "MARCH 7, 1983": GOSUB 8000: & "WAIT",.2: PRINT M$"YOU TYPED 'MARCH 7, 1983'";: & "WAIT",2: VTAB 24: HTAB 9: INVERSE : PRINT "SEE THE DIFFERENCE???";: NORMAL : GOSUB 8400: & "WAIT",10
  62. 650 W = 20: GOSUB 8700: GOSUB 8600: INVERSE : PRINT T$"STRING SEARCH": NORMAL :A$ = "GIVES YOU THE CAPABILITY OF FINDING A SUBSTRING WITHIN ANOTHER LARGER STRING, LIKE THE 'INSTR' FUNCTION FOUND IN MANY OTHER BASICS...": & "PRT",A$
  63. 660  & "WAIT",8: PRINT M$"EXAMPLE:"T$"60  & "Q$"SEARCH"Q$","Q$"THIS IS A TEST"Q$","Q$"TEST"Q$",P": GOSUB 8500: & "WAIT",4: PRINT M$:A$ = "FINDS " +Q$ +"TEST" +Q$ +" AT POSITION 11 IN " +Q$ +"THIS IS A TEST" +Q$ +", AND RETURNS P = 11.": & "PRT",A$: GOSUB 8500
  64. 670  & "WAIT",4: VTAB 11: HTAB 27: INVERSE : PRINT "TEST": NORMAL : GOSUB 8400
  65. 680  & "WAIT",12
  66. 700  HOME : GOSUB 8600: INVERSE : PRINT T$"FAST BLOAD": NORMAL :A$ = "LETS YOU LOAD BINARY FILES UP TO FIVE TIMES FASTER THAN DOS DOES.  HERE'S A LITTLE DEMONSTRATION:": & "PRT",A$: & "WAIT",6
  67. 710  PRINT M$:A$ = "FIRST, WE'LL LOAD A HI-RES PICTURE USING A NORMAL DOS 'BLOAD' (STARTING AT THE TONE)": & "PRT",A$: GOSUB 8500: & "WAIT",5: HGR2 : POKE FS,0: CALL 1002: & "BEEP",29,15: & "BEEP",39,15: PRINT M$ CHR$(4)"BLOAD PIC.BLOAD DEMO,A$4000": PR# 0: & "WAIT",6
  68. 720  TEXT : GOSUB 8400: & "WAIT",2: VTAB 14:A$ = "NOW, WE'LL LOAD THE SAME PICTURE USING ROUTINE MACHINE'S 'BLOAD'. (STARTING AT THE TONE)": & "PRT",A$: GOSUB 8500: & "WAIT",5: HGR2 : POKE FS,0: & "BEEP",29,15: & "BEEP",39,15: & "BLOAD","PIC.BLOAD DEMO",16384
  69. 730  & "WAIT",6: TEXT : GOSUB 8400: & "WAIT",2: VTAB 19: PRINT "SEE THE DIFFERENCE ???": GOSUB 8500
  70. 740  & "WAIT",5
  71. 800  HOME : GOSUB 8600: INVERSE : PRINT T$"TURTLE GRAPHICS": NORMAL :A$ = "GIVE YOU THE CAPABILITY OF DOING LOGO-STYLE GRAPHICS FROM YOUR BASIC PROGRAM.  WATCH THIS...": & "PRT",A$: & "WAIT",8: GOSUB 8400
  72. 810  HGR2 : POKE FS,0: HCOLOR= 3: HPLOT 140,96 +20: FOR X = 1 TO 58: READ H,V: HPLOT  TO H,V +20: FOR W = 1 TO 35: NEXT W: NEXT X
  73. 820  & "WAIT",6: TEXT : GOSUB 8400: & "WAIT",1.5: VTAB 9:A$ = "THIS IS ALL THAT IT TAKES TO MAKE THE DRAWING THAT YOU JUST SAW:": & "PRT",A$: LIST 9400,9450: GOSUB 8500
  74. 830  & "WAIT",10: & "HIRES ASCII",Z: POKE  -16304,0: POKE  -16299,0: GOSUB 8600: & "WAIT",2.5: FOR X = 1 TO 5: READ V,H,A$:V = (V -1) *8 +6:H = (H -1) *7 +4: FOR N = 1 TO  LEN(A$):C =  ASC( MID$ (A$,N)) -32: IF C  THEN  DRAW C AT H +(N -1) *7,V
  75. 840  NEXT N: NEXT X: GOSUB 8400: & "WAIT",8: HOME : TEXT 
  76. 850  DATA 141,96,138,99,135,92,145,94,137,104,133,88,151,94,133,108,131,83,156,96,129,111,131,77,161,99,123,113,132,71,165,104,117,114,136,66,168,110,110,113,140,60,169,117,103,110,147,56,169,125,96,106,155,53,168,134,90,99,164,51,164,142
  77. 860  DATA 85,91,174,52,158,150,81,81,184,54,150,158,80,71,194,59,140,164,80,59,204,65,129,168,82,47,213,74,116,171,87,35,220,86,103,171,95,23,226,99,89,168,105,12,229,113,74,163,117,3,230,129,60,155
  78. 870  DATA 2,2,"Routine Machine even has a Hi-Res",3.5,2,"character set,    so that you can",5,2,"put titles         on your Hi-Res",6.5,2,"screens...",6.5,23,"(Like This!)"
  79. 900  HOME : GOSUB 8600: HTAB 13: INVERSE : PRINT "ROUTINE MACHINE": NORMAL : PRINT :A$ = "THE FOLLOWING ROUTINES ARE INCLUDED WITH 'ROUTINE MACHINE':": & "PRT",A$: PRINT : & "WAIT",5
  80. 910  FOR X = 1 TO 30:P = X -2 * INT((X -1)/2) -1: HTAB P *20 +1: READ A$: PRINT A$ MID$ ( CHR$(13),1,P = 1);: & "BEEP",15,1: NEXT X
  81. 920  & "WAIT",15: GOSUB 8400
  82. 930  GOTO 50
  83. 950  DATA "SWAP","PRINT USING","TEXT OUTPUT","STRING INPUT","STRING SEARCH","ARRAY SEARCH","BUBBLE SORT","BEEP","SOUND EFFECTS","FIX LINK FIELDS","ERR","ERR MSSG","GOTO","GOSUB","LINE DATA RESTORE","DATA ELEMENT SELECT","XNUM","MEMORY MOVE"
  84. 960  DATA "RESTORE AMPERSAND","PTR READ","PTR WRITE","HIRES ASCII","TURTLE GRAPHICS","BLOAD","BINADR","RESET NORM","RESET ONERR","RESET RUN","RESET BOOT","FREE SECTOR COUNT"
  85. 8000 H =  PEEK(36) +1: FOR X = 0 TO  LEN(A$): HTAB H: PRINT  MID$ (A$,1,X);: & "BEEP",255 *  NOT   NOT X,1: INVERSE : PRINT  MID$ (" ",1,X < > LEN(A$));: NORMAL : & "WAIT",.1: NEXT X: HTAB H + LEN(A$): RETURN 
  86. 8100  TEXT : & "WINDOW",U,D,L,R: INVERSE : FOR V = U TO D: VTAB V: HTAB 1: PRINT  MID$ (SP$,1,R -(D = V) -L +1);: NEXT V: POKE ( PEEK(40) + PEEK(41) *256) + PEEK(36),32: & "WINDOW",U +1,D -1,L +1,R -1: VTAB U +1: HTAB 1: RETURN 
  87. 8200  TEXT : & "WINDOW",U +1,D -1,L +1,R -1: INVERSE : VTAB V2: HTAB H2: RETURN 
  88. 8300 V2 =  PEEK(37) +1:H2 =  PEEK(36) +1: CALL  -1220: VTAB V2: NORMAL : RETURN 
  89. 8400  & "BEEP",23,5: RETURN 
  90. 8500  & "BEEP",33,5: RETURN 
  91. 8600  & "BEEP",23,5: & "BEEP",0,5: & "BEEP",33,5: RETURN 
  92. 8700  FOR X1 = 1 TO W: & "SCROLL 4X","D": FOR X2 = 1 TO 5: NEXT X2: NEXT X1: VTAB 1: HTAB 1: RETURN 
  93. 9000  HOME : HTAB 7: INVERSE : PRINT " ***  ROUTINE MACHINE  *** ": NORMAL : PRINT M$"    SELECT AN OPTION: ";: INVERSE : PRINT " ": NORMAL : PRINT M$"1   APPEND A MODULE"T$"2   REMOVE A MODULE"T$"3   REMOVE ALL MODULES"T$"4   COPY ALL APPENDED CODE TO DISK"
  94. 9010  PRINT M$"5   RESTORE APPENDED CODE FROM DISK"T$"6   REPORT MODULES APPENDED"T$"7   SEARCH FOR AMPERSANDS/CALLS"T$"8   INSPECT APPLESOFT LINE"T$"9   DISPLAY MEMORY MAP"T$"0   EXIT";: HTAB 15: INVERSE : RETURN 
  95. 9100  HOME : PRINT "INSERT DISK WITH ROUTINE TO BE APPENDED,THEN ENTER NAME OF FILE"T$"('CAT' FOR CATALOG, <RETURN> TO QUIT)"T$"FILE NAME"T$"   --> ";: INVERSE : PRINT " " CHR$(8);: NORMAL : RETURN 
  96. 9300  FOR I = FE TO FL -1
  97. 9310  FOR J = I +1 TO FL
  98. 9320  IF A$(I) <A$(J)  THEN 9360
  99. 9330 TEMP$ = A$(I)
  100. 9340 A$(I) = A$(J)
  101. 9350 A$(J) = TEMP$
  102. 9360  NEXT J
  103. 9370  NEXT I
  104. 9400  HGR2 
  105. 9410  & "TG",I
  106. 9420  FOR X = 1 TO 174  STEP 3
  107. 9430  & "TG",M,X
  108. 9440  & "TG",T,123
  109. 9450  NEXT X
  110. 9700  HOME : PRINT "HERE IS A ";: INVERSE : PRINT "COMPLETE";: NORMAL : PRINT " ";:A$ = "APPLESOFT PROGRAM THAT USES A MACHINE LANGUAGE SUBROUTINE WITH THE HELP OF ROUTINE MACHINE:": & "PRT",A$
  111. 9705  PRINT T$"]";: INVERSE : PRINT " " CHR$(8);: & "WAIT",6: NORMAL :A$ = "LIST": GOSUB 8000
  112. 9710  PRINT T$"1  CALL  PEEK (175) + PEEK (176"M$"     ) * 256 - 46"
  113. 9720  PRINT "10  INPUT "Q$"PITCH, DURATION?"Q$";P,D"
  114. 9730  PRINT "20  & "Q$"BEEP"Q$",P,D"
  115. 9740  PRINT "30  GOTO 10"
  116. 9750  PRINT M$"]";: INVERSE : PRINT " ": NORMAL 
  117. 9760  RETURN 
  118. 9800  HOME : HTAB 7: INVERSE : PRINT " ***  MODULE REPORT  *** ";: NORMAL : HTAB 39: PRINT "1"T$"     INVOKED AS:      FILE NAME:"T$"#1   BEEP";: HTAB 23: PRINT "BEEP.RM": VTAB 22: PRINT "PRESS 'S' TO SEARCH PROGRAM"M$"   OR <RETURN> FOR MENU";: RETURN 
  119. 9830  HOME : PRINT "SEARCH TYPE:  ";: INVERSE : PRINT "AMPERSAND STATEMENTS": NORMAL : PRINT M$"DO YOU WISH TO SEARCH FOR:"T$"1   ALL SUCH STATEMENTS?"T$"2   ALL MODULE INVOCATIONS?"T$"3   INVOCATIONS OF A PARTICULAR MODULE?"
  120. 9840  PRINT T$"(PRESS 'T' TO CHANGE SEARCH TYPE,"M$"OR <RETURN> TO QUIT)": RETURN 
  121. 9860  HOME : HTAB 6: INVERSE : PRINT " *** AMPERSAND STATEMENTS *** ": NORMAL : PRINT M$"20    & "Q$"BEEP"Q$",P,D": VTAB 21: PRINT "PRESS 'S' FOR NEW SEARCH"M$"   OR 'L' TO INSPECT LINE"M$"   OR <RETURN> FOR MENU": RETURN 
  122. 9900 X = 127:Y = 25
  123. 9910  PRINT "("X","Y")": & "BEEP",X,Y
  124. 9920  GET A$
  125. 9930  IF A$ =  CHR$(11)  THEN N = 10: GOTO 9990
  126. 9940  IF A$ =  CHR$(10)  THEN N =  -10: GOTO 9990
  127. 9950  IF A$ =  CHR$(8)  THEN N =  -1: GOTO 9990
  128. 9960  IF A$ =  CHR$(21)  OR A$ = "U"  THEN N = 1: GOTO 9990
  129. 9970  IF A$ = " "  THEN N = 0: GOTO 9990
  130. 9971  IF A$ = "L"  THEN Y = Y +5:Y = Y *(Y <256) +255 *(Y >255): GOTO 9910
  131. 9972  IF A$ = "S"  THEN Y = Y -5:Y = Y *(Y > -1): GOTO 9910
  132. 9973  IF A$ = "E"  THEN  INPUT "P:";X: INPUT "D:";Y: GOTO 9910
  133. 9974  IF A$ = "Q"  THEN  END 
  134. 9980  PRINT "?": GOTO 9910
  135. 9990 X = X +N
  136. 9991  IF X <0  THEN X = 0
  137. 9992  IF X >255  THEN X = 255
  138. 9993  GOTO 9910
  139. 9999  POKE  -16304,0: POKE  -16299,0: POKE  -16302,0: POKE  -16297,0
  140. 10000  HCOLOR= 7: HPLOT 0,0: HPLOT 279,0: HPLOT 0,191: HPLOT 279,191: & "WAIT",.1: IF  PEEK( -16384) >127  THEN 10030
  141. 10010  HCOLOR= 0: HPLOT 0,0: HPLOT 279,0: HPLOT 0,191: HPLOT 279,191: & "WAIT",.1: IF  PEEK( -16384) >127  THEN 10030
  142. 10020  GOTO 10000
  143. 10030  POKE  -16303,0: POKE  -16300,0: TEXT : GET A$: END